package org.example.springvue.controller;
import org.example.springvue.domain.Product;
import org.example.springvue.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

// 告诉 Spring 这个类是一个控制器，负责处理 HTTP 请求
// 方法的返回值会自动序列化为 JSON 或 XML（取决于客户端请求的 Accept 头），无需手动处理
@RestController
// 定义该控制器处理的URL前缀，所有请求路径将以/api/products开头
@RequestMapping("/api/products")
public class ProductController {
    // 自动注入ProductService将业务逻辑委托给服务层处理
    @Autowired
    private ProductService productService;

    // 查询商品详情
    // 处理带路径变量的GET请求
    @GetMapping("/{id}")
    // @PathVariable : 从 URL 路径中提取变量值并绑定到控制器方法的参数上
    public Product getProduct(@PathVariable Integer id) {
        // 调用服务层方法根据ID获取商品
        return productService.getProductById(id);
    }

    // 查询商品列表
    // 处理无路径变量的GET请求，即匹配根路径/api/products
    @GetMapping
    public List<Product> getProductList() {
        return productService.getAllProducts();
    }
}
